$(function () {
    //初始化查询/重置按钮
    var oTable = new TableInit();
    oTable.Init();
    //初始化页面上面的按钮事件
    var button = new ButtonInit();
    button.Init();
});
//全局变量
var User = {
    table: $('#tb_user_departments'),
    url: "/sso/admin/user/ajaxList",
};
//初始化表格列
User.initColumns = function () {
    var columns = [
        {checkbox: true},
        {field: 'userAccount', title: '用户账号'},
        {field: 'email', title: '邮箱'},
        {field: 'iphone', title: '手机'},
        {field: 'realName',title: '真实姓名'},
        {field: 'nickName',title: '昵称'},
        {field: 'sex', title: '性别'},
        {field: 'roleTips',title: '角色'},
        {field: 'createdTime',title: '注册时间'},
        {field: 'Button',title: '操作',align: 'center',events: operateEvents,formatter: AddFunctionAlty}
    ]
    return columns;
};
//查询参数
var queryParams = function (params) {
    var temp = {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
        pageSize: params.limit,   //页面大小
        pageNumber: params.offset/params.limit+1,  //显示第几页
        userAccount: $("#txt_search_userAccount").val() || undefined,
        email: $("#txt_search_email").val() || undefined,
        iphone: $("#txt_search_iphone").val() || undefined,
        realName: $("#txt_search_realName").val() || undefined,
        nickName: $("#txt_search_nickName").val() || undefined,
    };
    return temp;
};

//初始化按钮
var ButtonInit = function () {
    var oInit = new Object();
    oInit.Init = function () {
        //初始化页面上面的按钮事件
        $("#btn_query").click(function(){
            User.table.bootstrapTable("refresh");
        });
        $("#btn_reset").click(function(){
            $('#formSearch')[0].reset();
            User.table.bootstrapTable("refresh");
        });
        $("#btn_add").click(function(){
            var page = "user/add_user";
            parent.layer.open({
                type: 2,
                title: '添加用户',
                shadeClose: true,
                fixed: false, //不固定
                area: ['420px', '480px'],
                content: ['/sso/admin/goToUrl?url='+page,'no'],
                closeBtn: 1,
                isOutAnim: true,//关闭动画,
                end:function () {
                    User.table.bootstrapTable("refresh");
                }
            });
        });
    };
    $("#btn_delete").click(function(){
        var row = User.table.bootstrapTable('getSelections');
        if (row.length < 1) {
            layer.msg('请至少选中一条数据',{icon:6});
        }else{
            var ids = "";
            for(var i=0;i<row.length;i++){
                if(i==0 || i=="0"){
                    ids+=row[i].id;
                }else{
                    ids+=","+row[i].id;
                }
            }
            delUser(ids);
        }
    });
    return oInit;
}

//初始化表格
var TableInit = function () {
    var oTableInit = {};
    //初始化Table
    oTableInit.Init = function () {
        User.table.bootstrapTable({
            url: User.url,         //请求后台的URL（*）
            method: 'post',                      //请求方式（*）
            toolbar: '#toolbar',                //工具按钮用哪个容器
            striped: true,                      //是否显示行间隔色
            cache: false,                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,                   //是否显示分页（*）
            sortable: false,                     //是否启用排序
            sortOrder: "asc",                   //排序方式
            columns: User.initColumns(),
            queryParams: queryParams,//传递参数（*）
            sidePagination: "server",           //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1,                       //初始化加载第一页，默认第一页
            pageSize: 10,                       //每页的记录行数（*）
            pageList: [5, 10, 25, 50, 100],        //可供选择的每页的行数（*）
            search: false,                       //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: true,
            showColumns: true,                  //是否显示所有的列
            showRefresh: false,                  //是否显示刷新按钮
            minimumCountColumns: 1,             //最少允许的列数
            clickToSelect: false,                //是否启用点击选中行
            //height: 500,                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "id",                     //每一行的唯一标识，一般为主键列
            showToggle: false,                    //是否显示详细视图和列表视图的切换按钮
            cardView: false,                    //是否显示详细视图
            detailView: false,                   //是否显示父子表
            //contentType: "application/x-www-form-urlencoded",//不使用JSON方式
            /*                showExport: true,                     //是否显示导出
             exportDataType: "all",              //basic', 'all', 'selected'.*/
            responseHandler: oTableInit.responseHandler,
            /*                ajaxOptions:{
             headers: {"Authorization",""}
             },*/
            onLoadSuccess: function (data) {
                if (data.status == 401) {
                    swal({
                        title: data.message,
                        text: "5秒后自动跳转",
                        type: "warning",
                        timer: 5000,
                        showCancelButton: true,
                        confirmButtonColor: "#DD6B55",
                        confirmButtonText: "去登录",
                        cancelButtonText: "取消",
                        closeOnConfirm: false
                    }, function () {
                        window.location.reload();
                    });
                }
            },
            onLoadError: function (data) {
                alert("数据加载失败");
            }
        });
    };

    window.operateEvents = {
        'click #TableEditor':function(e,value,row,index){
            var url = "/sso/admin/user/toEditPage?id="+row.id;
            parent.layer.open({
                type: 2,
                title: '编辑用户',
                shadeClose: true,
                fixed: false, //不固定
                area: ['420px', '480px'],
                content: [url,'no'],
                closeBtn: 1,
                isOutAnim: true,//关闭动画,
                end:function () {
                    User.table.bootstrapTable("refresh");
                }
            });
        },
        'click #TableDelete':function(e,value,row){
            delUser(row.id);
        },
        'click #TableAllotRoles':function (e,value,row) {
            var url = "/sso/admin/user/toAllotRolesPage?userId="+row.id;
            parent.layer.open({
                type: 2,
                title: '角色分配',
                shadeClose: true,
                fixed: false, //不固定
                area: ['500px', '480px'],
                content: [url,'no'],
                closeBtn: 1,
                isOutAnim: true,//关闭动画,
                end:function () {
                    User.table.bootstrapTable("refresh");
                }
            });
        }
    }
    oTableInit.responseHandler = function(res) { //数据筛选
        if (res) {
            return {
                "rows" : res.records,
                "total" : res.total
            };
        } else {
            return {
                "rows" : [],
                "total" : 0
            };
        }
    }
    return oTableInit;
};

function AddFunctionAlty(value,row,index){
    return [
        '<button id="TableEditor" class="btn btn-primary  btn-sm btn-outline" style="margin-right:2px;" type="button"><i class="fa fa-pencil"></i> &nbsp;修改</button>',
        '<button id="TableDelete" class="btn btn-primary  btn-sm btn-outline" style="margin-right:2px;" type="button"><i class="fa fa-remove"></i>&nbsp;删除</button>',
        '<button id="TableAllotRoles" class="btn btn-primary  btn-sm btn-outline" style="margin-right:2px;" type="button"><i class="fa fa-remove"></i>&nbsp;分配角色</button>'
    ].join("");
}

function delUser(userIds){
    layer.confirm('确定要删除吗？',function(index){
        layer.close(index);
        var loadIndex = layer.load(1);
        $.get("/sso/admin/user/remove",{ids:userIds},function(data,status){
            if(data.status == 200){
                User.table.bootstrapTable("refresh");
                layer.msg("删除用户成功");
            }else{
                layer.msg("删除用户失败，请重试");
            }
            layer.close(loadIndex);
        });
    });
}




